#include<cstddef>

#include "GameOptions.h"

GameOptions* GameOptions::m_generalOptions = NULL;

///////////////////////////////////////////////////////////////////////////////
// Constructors and Destructors
///////////////////////////////////////////////////////////////////////////////

GameOptions::~GameOptions(void)
{
    m_generalOptions = NULL;
}

///////////////////////////////////////////////////////////////////////////////
// Other public methods
///////////////////////////////////////////////////////////////////////////////

GameOptions* GameOptions::getOptions(void)
{
    if(m_generalOptions == NULL)
    {
        m_generalOptions = new GameOptions();
        return m_generalOptions;
    }
    else
    {
        return m_generalOptions;
    }
}

// Assignment operator
GameOptions& GameOptions::operator=(const GameOptions& opt)
{
    if (this == &opt) 
    {
        return *this;
    }

    m_options.m_difficulty = opt.difficulty();
    m_options.m_musicLevel = opt.musicLevel();
    m_options.m_sfxLevel = opt.sfxLevel();

    return *this;
}

///////////////////////////////////////////////////////////////////////////////
// Private methods
///////////////////////////////////////////////////////////////////////////////

// Trivial constructor
GameOptions::GameOptions(void)
    : m_options()
{
}
